From 942a1912de4e838e1baef8672f263f80eac8fd78 Mon Sep 17 00:00:00 2001 From: Alex Williamson Date: Mon, 2 Jul 2007 10:25:29 -0600 Subject: [PATCH] [IA64] Cleanup: Move is_platform_hp_ski() from xenmisc.c to xensetup.c - only caller is start_kernel - change to static __init - also move running_on_sim to xensetup.c, and change it from unsigned long to int, since it's just a boolean - declare running_on_sim in config.h near some other externs Tested by building, booting, starting a PV guest on rx2620. Signed-off-by: Aron Griffis --- xen/arch/ia64/linux-xen/efi.c | 5 +---- xen/arch/ia64/xen/dom_fw_utils.c | 1 - xen/arch/ia64/xen/domain.c | 2 -- xen/arch/ia64/xen/faults.c | 2 -- xen/arch/ia64/xen/fw_emul.c | 16 ++++++++++------ xen/arch/ia64/xen/vhpt.c | 2 -- xen/arch/ia64/xen/xenmisc.c | 19 ------------------- xen/arch/ia64/xen/xensetup.c | 31 +++++++++++++++++++++++++++---- xen/include/asm-ia64/config.h | 3 +++ 9 files changed, 41 insertions(+), 40 deletions(-) diff --git a/xen/arch/ia64/linux-xen/efi.c b/xen/arch/ia64/linux-xen/efi.c index 954a4dfcf2..cf4e26180e 100644 --- a/xen/arch/ia64/linux-xen/efi.c +++ b/xen/arch/ia64/linux-xen/efi.c @@ -1013,12 +1013,9 @@ efi_memmap_init(unsigned long *s, unsigned long *e) continue; } #ifdef XEN -// this works around a problem in the ski bootloader -{ - extern long running_on_sim; + /* this works around a problem in the ski bootloader */ if (running_on_sim && md->type != EFI_CONVENTIONAL_MEMORY) continue; -} #endif if (pmd == NULL || !efi_wb(pmd) || efi_md_end(pmd) != md->phys_addr) { contig_low = GRANULEROUNDUP(md->phys_addr); diff --git a/xen/arch/ia64/xen/dom_fw_utils.c b/xen/arch/ia64/xen/dom_fw_utils.c index 941bacae6a..a28394a836 100644 --- a/xen/arch/ia64/xen/dom_fw_utils.c +++ b/xen/arch/ia64/xen/dom_fw_utils.c @@ -52,7 +52,6 @@ int xen_ia64_is_vcpu_allocated(struct domain *d, uint32_t vcpu) int xen_ia64_is_running_on_sim(struct domain *unused) { - extern unsigned long running_on_sim; return running_on_sim; } diff --git a/xen/arch/ia64/xen/domain.c b/xen/arch/ia64/xen/domain.c index 7ee5db777b..04f260427e 100644 --- a/xen/arch/ia64/xen/domain.c +++ b/xen/arch/ia64/xen/domain.c @@ -58,8 +58,6 @@ static unsigned long __initdata dom0_size = 512*1024*1024; static unsigned int __initdata dom0_max_vcpus = 1; integer_param("dom0_max_vcpus", dom0_max_vcpus); -extern unsigned long running_on_sim; - extern char dom0_command_line[]; /* forward declaration */ diff --git a/xen/arch/ia64/xen/faults.c b/xen/arch/ia64/xen/faults.c index 2c657a82e0..f2ddb66af7 100644 --- a/xen/arch/ia64/xen/faults.c +++ b/xen/arch/ia64/xen/faults.c @@ -491,8 +491,6 @@ ia64_fault(unsigned long vector, unsigned long isr, unsigned long ifa, panic("Fault in Xen.\n"); } -unsigned long running_on_sim = 0; - /* Also read in hyperprivop.S */ int first_break = 0; diff --git a/xen/arch/ia64/xen/fw_emul.c b/xen/arch/ia64/xen/fw_emul.c index 1f4f4d1294..12eabeb44d 100644 --- a/xen/arch/ia64/xen/fw_emul.c +++ b/xen/arch/ia64/xen/fw_emul.c @@ -39,8 +39,6 @@ static DEFINE_SPINLOCK(efi_time_services_lock); -extern unsigned long running_on_sim; - struct sal_mc_params { u64 param_type; u64 i_or_m; @@ -142,7 +140,7 @@ sal_emulator (long index, unsigned long in1, unsigned long in2, status = 0; switch (index) { case SAL_FREQ_BASE: - if (!running_on_sim) + if (likely(!running_on_sim)) status = ia64_sal_freq_base(in1,&r9,&r10); else switch (in1) { case SAL_FREQ_BASE_PLATFORM: @@ -594,7 +592,7 @@ xen_pal_emulator(unsigned long index, u64 in1, u64 in2, u64 in3) unsigned long flags; int processor; - if (running_on_sim) + if (unlikely(running_on_sim)) return pal_emulator_static(index); // pal code must be mapped by a TR when pal is called, however @@ -1375,7 +1373,10 @@ do_ssc(unsigned long ssc, struct pt_regs *regs) break; case SSC_OPEN: arg1 = vcpu_get_gr(current,33); // access rights -if (!running_on_sim) { printk("SSC_OPEN, not implemented on hardware. (ignoring...)\n"); arg0 = 0; } + if (!running_on_sim) { + printk("SSC_OPEN, not implemented on hardware. (ignoring...)\n"); + arg0 = 0; + } if (arg0) { // metaphysical address arg0 = translate_domain_mpaddr(arg0, NULL); retval = ia64_ssc(arg0,arg1,0,0,ssc); @@ -1436,7 +1437,10 @@ if (!running_on_sim) { printk("SSC_OPEN, not implemented on hardware. (ignoring arg1 = vcpu_get_gr(current,33); arg2 = vcpu_get_gr(current,34); arg3 = vcpu_get_gr(current,35); - if (!running_on_sim) { printk("SSC_CONNECT_INTERRUPT, not implemented on hardware. (ignoring...)\n"); break; } + if (!running_on_sim) { + printk("SSC_CONNECT_INTERRUPT, not implemented on hardware. (ignoring...)\n"); + break; + } (void)ia64_ssc(arg0,arg1,arg2,arg3,ssc); break; case SSC_NETDEV_PROBE: diff --git a/xen/arch/ia64/xen/vhpt.c b/xen/arch/ia64/xen/vhpt.c index ae0f6df706..28df5ff9be 100644 --- a/xen/arch/ia64/xen/vhpt.c +++ b/xen/arch/ia64/xen/vhpt.c @@ -21,8 +21,6 @@ #include #include -extern long running_on_sim; - DEFINE_PER_CPU (unsigned long, vhpt_paddr); DEFINE_PER_CPU (unsigned long, vhpt_pend); #ifdef CONFIG_XEN_IA64_TLBFLUSH_CLOCK diff --git a/xen/arch/ia64/xen/xenmisc.c b/xen/arch/ia64/xen/xenmisc.c index 57725a53b8..580c8f4cab 100644 --- a/xen/arch/ia64/xen/xenmisc.c +++ b/xen/arch/ia64/xen/xenmisc.c @@ -35,25 +35,6 @@ void hpsim_setup(char **x) #endif } -// called from mem_init... don't think s/w I/O tlb is needed in Xen -//void swiotlb_init(void) { } ...looks like it IS needed - -long -is_platform_hp_ski(void) -{ - int i; - long cpuid[6]; - - for (i = 0; i < 5; ++i) - cpuid[i] = ia64_get_cpuid(i); - if ((cpuid[0] & 0xff) != 'H') return 0; - if ((cpuid[3] & 0xff) != 0x4) return 0; - if (((cpuid[3] >> 8) & 0xff) != 0x0) return 0; - if (((cpuid[3] >> 16) & 0xff) != 0x0) return 0; - if (((cpuid[3] >> 24) & 0x7) != 0x7) return 0; - return 1; -} - struct pt_regs *guest_cpu_user_regs(void) { return vcpu_regs(current); } /////////////////////////////// diff --git a/xen/arch/ia64/xen/xensetup.c b/xen/arch/ia64/xen/xensetup.c index 2f1fbb9fc8..243eb17f54 100644 --- a/xen/arch/ia64/xen/xensetup.c +++ b/xen/arch/ia64/xen/xensetup.c @@ -7,7 +7,6 @@ #include #include #include -//#include #include #include #include @@ -43,7 +42,6 @@ extern unsigned long domain0_ready; int find_max_pfn (unsigned long, unsigned long, void *); /* FIXME: which header these declarations should be there ? */ -extern long is_platform_hp_ski(void); extern void early_setup_arch(char **); extern void late_setup_arch(char **); extern void hpsim_serial_init(void); @@ -84,7 +82,6 @@ boolean_param("xencons_poll", opt_xencons_poll); */ unsigned int opt_xenheap_megabytes = XENHEAP_DEFAULT_MB; unsigned long xenheap_size = XENHEAP_DEFAULT_SIZE; -extern long running_on_sim; unsigned long xen_pstart; void *xen_pickle_offset __read_mostly; @@ -255,6 +252,31 @@ static void noinline init_done(void) startup_cpu_idle_loop(); } +int running_on_sim; + +static int __init +is_platform_hp_ski(void) +{ + int i; + long cpuid[6]; + + for (i = 0; i < 5; ++i) + cpuid[i] = ia64_get_cpuid(i); + + if ((cpuid[0] & 0xff) != 'H') + return 0; + if ((cpuid[3] & 0xff) != 0x4) + return 0; + if (((cpuid[3] >> 8) & 0xff) != 0x0) + return 0; + if (((cpuid[3] >> 16) & 0xff) != 0x0) + return 0; + if (((cpuid[3] >> 24) & 0x7) != 0x7) + return 0; + + return 1; +} + void __init start_kernel(void) { char *cmdline; @@ -273,10 +295,11 @@ void __init start_kernel(void) /* Be sure the struct shared_info size is <= XSI_SIZE. */ BUILD_BUG_ON(sizeof(struct shared_info) > XSI_SIZE); - running_on_sim = is_platform_hp_ski(); /* Kernel may be relocated by EFI loader */ xen_pstart = ia64_tpa(KERNEL_START); + running_on_sim = is_platform_hp_ski(); + early_setup_arch(&cmdline); /* We initialise the serial devices very early so we can get debugging. */ diff --git a/xen/include/asm-ia64/config.h b/xen/include/asm-ia64/config.h index 0c499f6353..9120e1c723 100644 --- a/xen/include/asm-ia64/config.h +++ b/xen/include/asm-ia64/config.h @@ -84,9 +84,12 @@ typedef unsigned long paddr_t; #define LOCK_PREFIX extern unsigned long xenheap_phys_end; +extern unsigned long total_pages; extern unsigned long xen_pstart; extern unsigned long xenheap_size; +extern int running_on_sim; + // from linux/include/linux/mm.h extern struct page_info *mem_map; -- 2.30.2